package com.brian.desktools.utils


object RegexUtils {

    // 验证电子邮件地址
    private const val EMAIL_REGEX = "[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}"
    // 验证电话号码（简单示例）
    private const val PHONE_REGEX = "\\+?[0-9]{10,15}"
    // 验证 URL
    private const val URL_REGEX = "https?://(www\\.)?[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}(/.*)?"
    // 验证日期（格式：yyyy-MM-dd）
    private const val DATE_REGEX = "\\d{4}-\\d{2}-\\d{2}"
    // 验证时间（格式：HH:mm:ss）
    private const val TIME_REGEX = "\\d{2}:\\d{2}:\\d{2}"
    // 验证日期时间（格式：yyyy-MM-dd HH:mm:ss）
    private const val DATE_TIME_REGEX = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}"

    // 验证电子邮件地址
    fun isValidEmail(email: String): Boolean {
        return email.matches(EMAIL_REGEX.toRegex())
    }

    // 验证电话号码
    fun isValidPhone(phone: String): Boolean {
        return phone.matches(PHONE_REGEX.toRegex())
    }

    // 验证 URL
    fun isValidUrl(url: String): Boolean {
        return url.matches(URL_REGEX.toRegex())
    }

    // 验证日期（格式：yyyy-MM-dd）
    fun isValidDate(date: String): Boolean {
        return date.matches(DATE_REGEX.toRegex())
    }

    // 验证时间（格式：HH:mm:ss）
    fun isValidTime(time: String): Boolean {
        return time.matches(TIME_REGEX.toRegex())
    }
    // 验证时间（格式：yyyy-MM-dd HH:mm:ss）
    fun isValidDateTime(time: String): Boolean {
        return time.matches(DATE_TIME_REGEX.toRegex())
    }

    // 自定义正则表达式验证
    fun matches(input: String, regex: String): Boolean {
        return input.matches(regex.toRegex())
    }
}
